Skip to content

fix(core): Fix includeWebFeedback crash by stubbing browser wrapper modules#6150

Merged
antonis merged 5 commits into
mainfrom
fix/include-web-feedback-crash
May 19, 2026
Merged

fix(core): Fix includeWebFeedback crash by stubbing browser wrapper modules#6150
antonis merged 5 commits into
mainfrom
fix/include-web-feedback-crash

Conversation

@antonis
Copy link
Copy Markdown
Contributor

@antonis antonis commented May 15, 2026

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

When includeWebFeedback: false is set in the Metro config, the app crashes at startup with:

TypeError: buildFeedbackIntegration is not a function (it is undefined)

Root cause: The feedback resolver stubs @sentry-internal/feedback to an empty module, but @sentry/browser's barrel file imports ./feedbackSync.js and ./feedbackAsync.js, which call buildFeedbackIntegration() at module evaluation time. Since the feedback package is empty, the function is undefined and the call crashes before any app code runs.

This differs from replay (includeWebReplay: false), which works because @sentry/browser only re-exports symbols from @sentry-internal/replay without calling them at evaluation time.

Fix: The feedback resolver now also stubs feedbackSync.js and feedbackAsync.js when imported from @sentry/browser, preventing them from evaluating and calling into the empty module. The buildSentryPackageExcludeResolver helper is changed from a RegExp to a shouldExcludeModule function to support this origin-aware matching.

💡 Motivation and Context

Fixes #6149

Introduced in #6025 — the includeWebFeedback option was modeled after includeWebReplay, but feedback has a different integration pattern in @sentry/browser (eager function call vs plain re-export).

💚 How did you test it?

  • Added 16 unit tests for the wrapper module exclusion (feedbackSync.js, feedbackAsync.js)
  • Added an integration-style test that simulates all @sentry/browser barrel imports and verifies only feedback-related modules are stubbed
  • All 169 tests pass (142 existing + 27 new)
  • Build and lint pass

📝 Checklist

🔮 Next steps

…per modules

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 15, 2026

Semver Impact of This PR

None (no version bump detected)

📋 Changelog Preview

This is how your changes will appear in the changelog.
Entries from this PR are highlighted with a left border (blockquote style).


  • fix(core): Fix includeWebFeedback crash by stubbing browser wrapper modules by antonis in #6150
  • fix(core): Deduplicate native HTTP breadcrumbs by antonis in #6132
  • chore(deps): bump brace-expansion from 5.0.5 to 5.0.6 by dependabot in #6183
  • chore(deps): bump ws from 8.16.0 to 8.20.1 by dependabot in #6184
  • fix(ios): Use conditional import for SentrySwizzle.h by antonis in #6186
  • fix(ios): use framework-style import for SentrySwizzle.h by alwx in #6181
  • chore(deps): bump actions/create-github-app-token from 3.1.1 to 3.2.0 by dependabot in #6178
  • chore(deps): bump github/codeql-action from 4.35.4 to 4.35.5 by dependabot in #6176
  • chore(deps): bump getsentry/craft from 2.26.3 to 2.26.5 by dependabot in #6179
  • chore(deps): bump getsentry/craft/.github/workflows/changelog-preview.yml from 2.26.3 to 2.26.5 by dependabot in #6177
  • fix(core): Resolve expo CLI directly instead of using npx in sourcemap upload by antonis in #6155
  • feat(core): Surface textComponentNames option in Metro config by antonis in #6169
  • chore(deps): update Sentry Android Gradle Plugin to v6.7.0 by github-actions in #6153
  • Filter ExceptionsManager.reportException duplicates in app-start init by alwx in #6145
  • chore(deps): update JavaScript SDK to v10.53.1 by github-actions in #6139
  • feat(core): Enable autoInjectSentryLabel by default in Metro config by antonis in #6141
  • feat(core): Respect Mask boundaries when reading sentry-label by antonis in #6142
  • fix(android): Handle boolean values in JSON options converter by antonis in #6130
  • Multi-instance <TimeToInitialDisplay> / <TimeToFullDisplay> coordination; a multi-signal TTID/TTFD system by alwx in #6090
  • chore(deps): update Bundler Plugins to v5.3.0 by github-actions in #6138
  • chore: Merge 8.11.1 back to main by antonis in #6135
  • chore: Update warning regarding iOS crash in sentry-cocoa 9.12.0 by antonis in #6136
  • chore(deps): update CLI to v3.4.2 by github-actions in #6129
  • chore(deps): bump getsentry/craft/.github/workflows/changelog-preview.yml from 2.26.2 to 2.26.3 by dependabot in #6126

Plus 11 more


🤖 This preview updates automatically when you update the PR.

Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 6d60b11. Configure here.

@antonis antonis marked this pull request as ready for review May 15, 2026 11:47
@antonis antonis added the ready-to-merge Triggers the full CI test suite label May 15, 2026
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

Android (legacy) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 492.17 ms 529.51 ms 37.34 ms
Size 48.30 MiB 53.54 MiB 5.23 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
3d377b5+dirty 406.18 ms 453.52 ms 47.34 ms
8929511+dirty 405.33 ms 452.16 ms 46.83 ms
100ce80+dirty 463.66 ms 539.56 ms 75.90 ms
3817909+dirty 406.67 ms 416.58 ms 9.91 ms
3b6e9f9+dirty 442.70 ms 486.44 ms 43.74 ms
4e0ba9c+dirty 452.84 ms 473.36 ms 20.52 ms
5fe1c6c+dirty 401.62 ms 445.28 ms 43.66 ms
44c8b3f+dirty 414.20 ms 457.28 ms 43.08 ms
890d145+dirty 504.54 ms 491.55 ms -12.99 ms
3ce5254+dirty 410.57 ms 448.48 ms 37.91 ms

App size

Revision Plain With Sentry Diff
3d377b5+dirty 43.75 MiB 48.14 MiB 4.39 MiB
8929511+dirty 43.75 MiB 48.16 MiB 4.41 MiB
100ce80+dirty 48.30 MiB 53.46 MiB 5.15 MiB
3817909+dirty 43.75 MiB 48.08 MiB 4.33 MiB
3b6e9f9+dirty 48.30 MiB 53.54 MiB 5.23 MiB
4e0ba9c+dirty 48.30 MiB 53.49 MiB 5.19 MiB
5fe1c6c+dirty 43.75 MiB 48.14 MiB 4.39 MiB
44c8b3f+dirty 48.30 MiB 53.46 MiB 5.15 MiB
890d145+dirty 43.75 MiB 48.14 MiB 4.39 MiB
3ce5254+dirty 43.75 MiB 48.12 MiB 4.37 MiB

@sentry
Copy link
Copy Markdown

sentry Bot commented May 15, 2026

📲 Install Builds

Android

🔗 App Name App ID Version Configuration
Sentry RN io.sentry.reactnative.sample 8.11.1 (88) Release

⚙️ sentry-react-native Build Distribution Settings

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 15, 2026

iOS (legacy) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 3839.67 ms 1227.82 ms -2611.84 ms
Size 5.15 MiB 6.68 MiB 1.53 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
5fe1c6c+dirty 1220.79 ms 1217.63 ms -3.16 ms
7d8c8bd+dirty 3837.24 ms 1215.51 ms -2621.73 ms
df5d108+dirty 1225.90 ms 1220.14 ms -5.76 ms
23598c3+dirty 1207.00 ms 1209.90 ms 2.90 ms
bc0d8cf+dirty 3830.33 ms 1220.52 ms -2609.81 ms
5a21b51+dirty 3823.11 ms 1214.46 ms -2608.65 ms
3817909+dirty 1183.90 ms 1187.50 ms 3.60 ms
d2eadf8+dirty 3842.42 ms 1228.91 ms -2613.50 ms
5c1e987+dirty 1204.30 ms 1222.15 ms 17.85 ms
7d6fd3a+dirty 1223.29 ms 1229.57 ms 6.28 ms

App size

Revision Plain With Sentry Diff
5fe1c6c+dirty 3.38 MiB 4.77 MiB 1.39 MiB
7d8c8bd+dirty 5.15 MiB 6.68 MiB 1.53 MiB
df5d108+dirty 3.38 MiB 4.73 MiB 1.35 MiB
23598c3+dirty 3.38 MiB 4.80 MiB 1.42 MiB
bc0d8cf+dirty 5.15 MiB 6.67 MiB 1.51 MiB
5a21b51+dirty 5.15 MiB 6.67 MiB 1.51 MiB
3817909+dirty 3.38 MiB 4.73 MiB 1.35 MiB
d2eadf8+dirty 5.15 MiB 6.67 MiB 1.51 MiB
5c1e987+dirty 3.38 MiB 4.73 MiB 1.35 MiB
7d6fd3a+dirty 3.38 MiB 4.77 MiB 1.39 MiB

Previous results on branch: fix/include-web-feedback-crash

Startup times

Revision Plain With Sentry Diff
e8df448+dirty 3837.14 ms 1222.50 ms -2614.64 ms

App size

Revision Plain With Sentry Diff
e8df448+dirty 5.15 MiB 6.68 MiB 1.53 MiB

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 15, 2026

iOS (new) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 3830.49 ms 1212.60 ms -2617.89 ms
Size 5.15 MiB 6.68 MiB 1.53 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
5fe1c6c+dirty 1201.36 ms 1209.15 ms 7.78 ms
7d8c8bd+dirty 3847.98 ms 1230.77 ms -2617.21 ms
df5d108+dirty 1207.34 ms 1210.50 ms 3.16 ms
23598c3+dirty 1223.59 ms 1229.13 ms 5.53 ms
bc0d8cf+dirty 3834.64 ms 1223.91 ms -2610.73 ms
5a21b51+dirty 3837.87 ms 1223.47 ms -2614.40 ms
3817909+dirty 1210.76 ms 1215.64 ms 4.89 ms
d2eadf8+dirty 3841.53 ms 1216.15 ms -2625.39 ms
5c1e987+dirty 1208.43 ms 1220.72 ms 12.29 ms
7d6fd3a+dirty 1210.89 ms 1217.63 ms 6.74 ms

App size

Revision Plain With Sentry Diff
5fe1c6c+dirty 3.38 MiB 4.77 MiB 1.39 MiB
7d8c8bd+dirty 5.15 MiB 6.68 MiB 1.53 MiB
df5d108+dirty 3.38 MiB 4.73 MiB 1.35 MiB
23598c3+dirty 3.38 MiB 4.80 MiB 1.42 MiB
bc0d8cf+dirty 5.15 MiB 6.67 MiB 1.51 MiB
5a21b51+dirty 5.15 MiB 6.67 MiB 1.51 MiB
3817909+dirty 3.38 MiB 4.73 MiB 1.35 MiB
d2eadf8+dirty 5.15 MiB 6.67 MiB 1.51 MiB
5c1e987+dirty 3.38 MiB 4.73 MiB 1.35 MiB
7d6fd3a+dirty 3.38 MiB 4.77 MiB 1.39 MiB

Previous results on branch: fix/include-web-feedback-crash

Startup times

Revision Plain With Sentry Diff
e8df448+dirty 3822.83 ms 1219.24 ms -2603.59 ms

App size

Revision Plain With Sentry Diff
e8df448+dirty 5.15 MiB 6.68 MiB 1.53 MiB

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 15, 2026

Android (new) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 483.90 ms 519.25 ms 35.35 ms
Size 48.30 MiB 53.54 MiB 5.23 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
4e0ba9c+dirty 421.39 ms 455.80 ms 34.41 ms
5fe1c6c+dirty 365.84 ms 408.62 ms 42.78 ms
d2eadf8+dirty 468.02 ms 530.37 ms 62.35 ms
c004dae+dirty 404.60 ms 430.67 ms 26.07 ms
d038a14+dirty 405.08 ms 444.36 ms 39.28 ms
0d9949d+dirty 414.88 ms 428.68 ms 13.81 ms
bc0d8cf+dirty 407.66 ms 461.35 ms 53.69 ms
7d6fd3a+dirty 435.06 ms 458.78 ms 23.72 ms
2c735cc+dirty 435.20 ms 459.48 ms 24.28 ms
ad66da3+dirty 411.49 ms 449.38 ms 37.89 ms

App size

Revision Plain With Sentry Diff
4e0ba9c+dirty 48.30 MiB 53.49 MiB 5.19 MiB
5fe1c6c+dirty 43.94 MiB 49.00 MiB 5.06 MiB
d2eadf8+dirty 48.30 MiB 53.48 MiB 5.18 MiB
c004dae+dirty 48.30 MiB 53.49 MiB 5.19 MiB
d038a14+dirty 48.30 MiB 53.49 MiB 5.19 MiB
0d9949d+dirty 43.94 MiB 48.99 MiB 5.05 MiB
bc0d8cf+dirty 48.30 MiB 53.48 MiB 5.18 MiB
7d6fd3a+dirty 43.94 MiB 49.00 MiB 5.06 MiB
2c735cc+dirty 43.94 MiB 48.94 MiB 5.00 MiB
ad66da3+dirty 48.30 MiB 53.49 MiB 5.19 MiB

Previous results on branch: fix/include-web-feedback-crash

Startup times

Revision Plain With Sentry Diff
e8df448+dirty 299.08 ms 326.67 ms 27.59 ms

App size

Revision Plain With Sentry Diff
e8df448+dirty 48.30 MiB 53.54 MiB 5.23 MiB

Copy link
Copy Markdown
Collaborator

@lucas-zimerman lucas-zimerman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@antonis antonis enabled auto-merge (squash) May 19, 2026 09:10
@antonis antonis removed the ready-to-merge Triggers the full CI test suite label May 19, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Fails
🚫 Pull request is not ready for merge, please add the "ready-to-merge" label to the pull request

Generated by 🚫 dangerJS against 118a32c

@antonis antonis merged commit 1122a96 into main May 19, 2026
52 of 65 checks passed
@antonis antonis deleted the fix/include-web-feedback-crash branch May 19, 2026 09:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Docs example for includeWebFeedback/includeWebReplay crashes at startup

2 participants